package com.dsdl.chatapp.common.db;

import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

/**
 * Created by zzg on 2016/8/1.
 */
public interface IDBManager {
    /**
     * 获取数据库
     *
     * @return SQLiteDatabase对象
     */
    SQLiteDatabase getDatabase();

    /**
     * 插入数据
     * @param table 表名
     * @param values ContentValues对象
     * @return 插入成功后数据的行号
     */
    long insert(String table, ContentValues values);

    /**
     * 删除数据
     * @param table 表名
     * @param whereClause 条件
     * @param whereArgs 条件值
     * @return 删除的条目
     */
    int delete(String table,String whereClause,String[] whereArgs);

    /**
     * 更新数据
     * @param table 表名
     * @param values ContentValues对象
     * @param whereClause 条件
     * @param whereArgs 条件值
     * @return 受影响的行数
     */
    long update(String table, ContentValues values, String whereClause, String[] whereArgs);

    /**
     * 插入或更新数据
     * @param table 表名
     * @param values ContentValues对象
     * @param whereClause 条件
     * @param whereArgs 条件值
     * @return 插入成功后的数据的行号或更新成功受影响的行数
     */
    long insertOrUpdate(String table,ContentValues values, String whereClause,String[] whereArgs);

    /**
     * sql语句查询
     * @param sql sql语句
     * @param selectionArgs 查询的条件值
     * @return
     */
    Cursor rawQuery(String sql,String[] selectionArgs);

    /**
     * sqlite语句查询
     * @param table 要查询的数据表
     * @param columns 要查询的字段
     * @param selection 查询条件
     * @param selectionArgs 查询条件值
     * @param groupBy 对相同的数据分组
     * @param having 指定条件来过滤将出现在最终结果中的分组结果
     * @param orderBy 排序
     * @param limit 分页
     * @return cursor对象
     */
    Cursor query(String table,String[] columns,String selection,String[] selectionArgs,String groupBy,String having,String orderBy,String limit);

}
